This invention relates to a software system by which a plurality of independent application program modules may be integrated for federated execution and display, and particularly to a software system which fuses the display outputs of a plurality of independent application programs into a single overlayed screen display.
The invention is also useful in connection with a windowing management system to overlay displays generated by a plurality of independent application programs within a single window or display area.
In the display of computer-generated data, it is known that the display screen can generate displays in any given display area from the display generation routines of a single program. This is accomplished by executing the draw or display function at screen coordinates specified by the application program. Graphical displays are generated using a graphics program, which may include a plurality of subroutines representing graphical representations, such as icons. Other programs include camera models, two-dimensional coordinate subroutines, and three-dimensional coordinate programs for generation of displays based on input data. Overlay subroutines of some programs permit overlaying the displays in a "graphics-on-graphics" format. The display generation routines for the graphics program include pre-draw (get ready) and draw routines to generate graphical images on the display screen in accordance with the program commands. The plurality of templates and subroutines are imbedded in the individual graphics program. As the nature, number and complexity of the subroutines increase, so does the complexity of the graphics generation subroutines.
One of the difficulties with prior systems is that it has become increasingly difficult to alter the program, as well as subroutines within the program, without adversely affecting other parts of the program, or subroutines therein. The reason for this increased difficulty is that as users require increased versatility and functionality of the display, the application programs have become more complex in functional execution, as well as in input interface and coordination between program subroutines requesting greater numbers and more varying inputs and commands. Moreover, the user interface of the program had to be modified and expanded to accommodate the growing number and types of input devices. With the increasing size and complexity of the graphics programs, including that program's user interfaces and display generation routines, it became increasingly difficult to modify the program without adversely affecting other portions thereof. More particularly, a software developer, not fully familiar with the intricacies of the entire program, could create program errors by the addition of templates or subroutines or the correction of other code in the graphics program. As the collection of interactive program functions became more numerous and complex, it has become increasingly difficult for a single programmer to maintain the knowledge necessary to effectuate a change in the program without adversely affecting other parts thereof.
One well known technique for displaying data from a computer output employs the use of plural windows which are juxtaposed or partly occluded, for purposes of orderly presentation of the display of data to the user. A typical windowing treatment employs a windowing management system, which is a computer program designed to control the size, shape and position of each of the plurality of windows on the individual display screen. The windowing management system assigns a single program to each window, each program having its own user interfaces and display generation routines to effectuate input and processing of data, in manners specified by the program, and to generate displays of outputs in the individual window. The windowing management system ensures each display is maintained within the bounds of the assigned window.
In the use of a typical windowing system, the user selects the size and position of each window, including occluding the windows themselves, and, through access of each of the individual programs, manipulates the data display for each individual window. More particularly, the processor, operating under control of program permits the input of data, execution of specific desired operations using that data, and display of the results in a desired manner in window A on the display screen. To effectuate displays in window B, the processor executes under control of program 2 to input and process data and effectuate a desired display in window B on the display screen. Each window may be employed for textual display, graphical display, or a combination thereof, depending on the capabilities of the program employed. A hand-held "mouse" control, or other pointing device, is often employed to effectuate operations in a given window, usually in conjunction with a series of displayed commands appearing at an edge of the window ("menu"). A mouse is often used to define the position and size of the window, as well as to define graphs and tables, generate lines, and move displayed images within a window.
Windowing software, while permitting graphical display from several programs, did not display outputs from several programs in a registered, overlayed fashion. Instead, the several displays were juxtaposed for comparison by the user, or were pre-registered by a memory device for display under control of a single program. Windows permitted independent application programs for each window. Consequently, there is a need for a program technique by which diverse input devices provide input for complex execution to generate complex displays, yet which permits additions and changes to the program by persons unfamiliar with other parts thereof, without adversely affecting the program. However, this need has not been met using a single program under the control of a single processor to drive the single window.
Certain prior windowing management systems, such as X-Windows, permitted users to generate displays of outputs from two independent application programs anywhere on the display screen. While such windowing systems would seemingly not preclude two or more programs from drawing in a single window, such windowing systems did not provide support to do so. Thus, windowing systems provided no ability for the displays of two or more programs to independently share windows or to coordinate displays. Nor have windows systems solved problems associated with input commands adversely affecting the several programs, or the difficulties with redraw commands to the several programs, among other problems.